Elasticsearch এ Match, Term, এবং Range Query তিনটি অত্যন্ত গুরুত্বপূর্ণ এবং সাধারণভাবে ব্যবহৃত query, যা ডকুমেন্ট অনুসন্ধান এবং ফিল্টার করার জন্য ব্যবহৃত হয়। এদের প্রত্যেকটির নিজস্ব বৈশিষ্ট্য এবং ব্যবহার রয়েছে। নিচে এদের বেসিক ধারণা এবং উদাহরণ দিয়ে ব্যাখ্যা করা হলো:
Match Query টেক্সট-ভিত্তিক ফিল্ডের মধ্যে টার্ম বা ফ্রেজ খুঁজে বের করার জন্য ব্যবহৃত হয়। এটি একটি বিশ্লেষণ প্রক্রিয়া (analyzer) ব্যবহার করে ইনডেক্স করা টেক্সটকে টোকেনাইজ করে এবং তারপর সার্চ টেক্সটের সাথে মিলানোর চেষ্টা করে।
GET /my-index/_search
{
"query": {
"match": {
"description": "Elasticsearch tutorial"
}
}
}
উপরের উদাহরণে, description
ফিল্ডে "Elasticsearch tutorial"
সম্পর্কিত টার্ম বা ফ্রেজ খুঁজে বের করবে। Elasticsearch টেক্সটটিকে টোকেনাইজ করে এবং ইনডেক্স করা ডেটার সাথে মিলিয়ে দেখে কোন ডকুমেন্টগুলো এই টার্মগুলো ধারণ করে।
Term Query নির্দিষ্ট মান বা টার্ম খুঁজে বের করার জন্য ব্যবহৃত হয় এবং এটি ইনডেক্স করা ডেটাকে বিশ্লেষণ (analyze) করে না। এটি মূলত exact match এর জন্য উপযুক্ত এবং সাধারণত কীওয়ার্ড, সংখ্যা বা নির্দিষ্ট মান (যেমন স্ট্যাটাস, আইডি) খুঁজতে ব্যবহৃত হয়।
GET /my-index/_search
{
"query": {
"term": {
"status": "published"
}
}
}
এই উদাহরণে, status
ফিল্ডে "published"
মান খুঁজে দেখা হবে। এটি সঠিকভাবে "published"
মান ধারণ করে এমন ডকুমেন্টগুলোই রিটার্ন করবে।
Range Query এমন ফিল্ডে অনুসন্ধান করে যেগুলোতে সংখ্যা, তারিখ, বা অন্যান্য পরিসীমা ভিত্তিক ডেটা রয়েছে। এটি নির্দিষ্ট মানের পরিসীমা বা রেঞ্জের মধ্যে থাকা ডকুমেন্টগুলোকে রিটার্ন করে।
gte
(greater than or equal), lte
(less than or equal), gt
(greater than), lt
(less than) ব্যবহার করা হয়।GET /my-index/_search
{
"query": {
"range": {
"price": {
"gte": 100,
"lte": 500
}
}
}
}
উপরের উদাহরণে, price
ফিল্ডের মধ্যে যেসব ডকুমেন্টের দাম ১০০ থেকে ৫০০ এর মধ্যে আছে সেগুলো রিটার্ন হবে। এখানে gte
(greater than or equal) এবং lte
(less than or equal) অপারেটর ব্যবহার করা হয়েছে।
এগুলোর সাহায্যে আপনি Elasticsearch এ বিভিন্ন ধরনের ডেটা খুব সহজেই সার্চ করতে পারেন এবং সার্চ রেজাল্টকে আরও নির্দিষ্ট করতে পারেন।
আরও দেখুন...